Skip to content

eval: guard authenticated live-daemon registry recovery - #55

Open
schickling-assistant wants to merge 6 commits into
compoundingtech:mainfrom
schickling-assistant:schickling-assistant/2026-07-30-bright-bernerslee-99
Open

eval: guard authenticated live-daemon registry recovery#55
schickling-assistant wants to merge 6 commits into
compoundingtech:mainfrom
schickling-assistant:schickling-assistant/2026-07-30-bright-bernerslee-99

Conversation

@schickling-assistant

@schickling-assistant schickling-assistant commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Closes #54.

Paired implementation: compoundingtech/pty#128, the selected issue #126 protocol, now merged.

Summary

Rewrites the deterministic, model-free pty-live-recovery cell for PTY PR #128’s authenticated snapshot/revision contract. This is a held-out protocol rewrite, not a metadata-only retarget of the incompatible, superseded PR #127 oracle.

The cell uses only eval-owned synthetic PTY roots and providers. It proves:

  • the exact merged PTY source and built CLI/server artifacts;
  • pty recover <name> --snapshot <metadata.json> as the explicit surface;
  • complete private-root capability fields for protocol, secret, process-start token, launch identity, root/recovery-directory identity, and signed metadata revision;
  • stable daemon PID, generation, process-start token, launch identity, attached client, and provider across recovery;
  • secret and revision rotation after recovery;
  • fresh-client attachability and exactly one provider launch plus one session_start;
  • replay refusal after rotation;
  • stale pre-tag snapshot refusal without metadata rollback;
  • secret-tampered snapshot refusal without registry publication;
  • fail-closed root and .recovery permission downgrades before request/result, lock, socket, PID, or metadata publication;
  • unsupported-daemon refusal while the original daemon stays alive; and
  • cleanup limited to captured synthetic daemon PIDs and exact eval roots.

Exact dependency

PTY PR #128 final reviewed head 9ad3a4368027d8a9e78a22319615a3ab837347e1 was squash-merged as exact source 9eb958c5aae026d5c05690ab72b528662c55708d.

The squash landed on newer PTY main, so the lockfile and launcher remain identical while the compiled CLI/server digests correctly incorporate intervening merged work. Local exact-merged-source build provenance:

  • package lock SHA256 43189b5b5b1d560be4b9102d2ed0793d89b9b01dbb3bbd976948f10c6669118d
  • CLI launcher SHA256 3c3d655b713a6e1a40309eb1b45bb75a023e87dc6391f7dbaa54cefc3efb49ab
  • compiled CLI SHA256 46285f9cb0212751ccc8344ba821038643c589c1b31a62cfd4354a5b56d2c5c3
  • compiled server SHA256 f7ec154a8f968077c19a3affb5c08bed101fc045fa53cce64178f5512c30711b

This is exact merged-source evidence, not a published PTY release artifact.

Review-red closure

The predecessor cleanup could ignore a daemon termination timeout and prove only that registry roots were removed. Cleanup now binds every captured PID to its Linux process-start token, sends bounded TERM, uses bounded KILL only while that exact captured identity remains alive, and fails if any tracked identity survives. A TERM-resistant synthetic sentinel forces the KILL path on every green run. The judge requires the receipt’s allTrackedDaemonsDead fact, a positive captured-daemon count, and a positive fallback count in addition to root removal.

Validation

At exact eval head c595716794de7d027b9e0215ca0d34ae573a5981, after normal follow-up commits only:

  • frozen old PR #127 oracle against final PR #128: expected RED, 0 PASS / 8 FAIL / 8 gating judges
  • merged-source pty-live-recovery: 11 PASS / 0 FAIL / 11 gating judges
  • cleanup receipt: 5 captured daemons, 6 tracked processes, all tracked identities dead, 1 forced KILL fallback, both exact roots absent; receipt SHA256 9e1c4005c0236e82deaee8b421cce8edf314d5f652d6830708fbd9d73ca0c117
  • complete 59-cell model-free corpus preflight: PASS on published st2 0fed14bb5653b67e1d64f1199e240c4c5c612bf7, binary SHA256 d61d12b2b1189a391c196ca28f8f4ba69072d14fcbad2571fc29db1f250f4eed
  • 224 shell files parse, 109 KDL files parse, 59 maintained evals load semantically, 11 nested fleet catalogs validate strictly, generated catalog and all model-free policy/history/VRS/cleanup gates: PASS
  • zero model/provider calls and no residual eval-owned PTY roots

No production recovery, provider call, merge of this PR, or deployment was performed.

agent-session-id: a078daee-6f98-4916-91a8-d21291407789
agent-tool: Codex CLI
agent-tool-version: 0.145.0
agent-model: unknown
agent-runtime-profile: /nix/store/mnx8agbdq3wiyb6vz63lhgscgazkrn98-coding-agent-runtime-profile/share/coding-agents/profile.json
agent-skills-manifest: /nix/store/5r69m9k2llmri3na81518zx0a7y0d3cn-agent-skills-corpus/share/agent-skills/manifest.json
tooling-profile: dotfiles@0fb7e03
@myobie myobie changed the title eval: guard live daemon registry recovery eval: guard authenticated live-daemon registry recovery Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Eval live-daemon registry recovery without duplicate launch

2 participants